import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JButton;


import java.awt.List;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.HashMap;

import javax.swing.SwingConstants;

/*
 * Fenetre de consultation de documents via une recherche par auteur(s)
 * @author CELCE
 */
public class VueRechercheParAuteur extends Vue {
	
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private List listeAuteurs;
	private List listeOuvrages;
	private List listeArticles;
	private Ouvrage _ouvrage;
	
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton buttonRech;
	private JButton buttonAnnuler;
	private JButton buttonFermer;
	private JButton buttonVoir;
	
	public VueRechercheParAuteur(Controleur controleur) {
		super(controleur);
		setTitle("Recherche par auteur(s)");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
		setBounds(100, 100, 400, 470);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		
		JLabel lblAuteur = new JLabel("Choisir auteur(s)");
		lblAuteur.setBounds(25, 30, 110, 15);
		contentPane.add(lblAuteur);
	
		listeAuteurs = new List ();
		listeAuteurs.setMultipleSelections(true);
		listeAuteurs.setBounds(150, 20, 217, 80);		
		contentPane.add(listeAuteurs);
		

		buttonAnnuler = new JButton("Annuler");
		buttonAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRechercheParAuteur.this);}
			});
		buttonAnnuler.setBounds(25, 120, 110, 25);
		contentPane.add(buttonAnnuler);
		
		buttonRech = new JButton("Rechercher");
		buttonRech.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//_auteurs=getControleur().auteurSelec(listeAuteurs.getSelectedItems());	
				getControleur().rechercheDocuments(getControleur().auteurSelec(listeAuteurs.getSelectedItems()));
				setEtat(Vue.finale);
			}
		});
		buttonRech.setBounds(257, 120, 110, 25);
		contentPane.add(buttonRech);	
	    
		alimenteAuteurs();
		
		
		JLabel lblAuteur1 = new JLabel();
		lblAuteur1.setHorizontalAlignment(SwingConstants.RIGHT);
		lblAuteur1.setBounds(18, 165, 100, 15);
		contentPane.add(lblAuteur1);
		
		JLabel lblOuvrage = new JLabel("Les ouvrages");
		lblOuvrage.setHorizontalAlignment(SwingConstants.RIGHT);
		lblOuvrage.setBounds(25, 187, 85, 15);
		contentPane.add(lblOuvrage);
		

		listeOuvrages = new List ();
		listeOuvrages.setBounds(150,180, 217, 80);		
		contentPane.add(listeOuvrages);
		
		buttonVoir = new JButton("Voir");
		buttonVoir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				_ouvrage = getControleur().ouvrageSelec(listeOuvrages.getSelectedItem());
				getControleur().rechOuvRPA(_ouvrage.getIsbn());

			}
		});
		buttonVoir.setBounds(299, 266, 68, 25);
		contentPane.add(buttonVoir);

		
		JLabel lblArticle = new JLabel("Les articles");
		lblArticle.setHorizontalAlignment(SwingConstants.RIGHT);
		lblArticle.setBounds(12, 302, 85, 15);
		contentPane.add(lblArticle);
		
		listeArticles = new List ();		
		listeArticles.setBounds(150, 297, 217, 80);		
		contentPane.add(listeArticles);	
		
		buttonFermer = new JButton("Fermer");
		buttonFermer.setEnabled(false);
		buttonFermer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			getControleur().fermerVue(VueRechercheParAuteur.this);}
		});
		buttonFermer.setBounds(150, 400, 100, 25);
		contentPane.add(buttonFermer);		
		
		}
	
	public void alimenteAuteurs(){
		HashMap<Integer, Auteur> _auteurs;		
		_auteurs = getControleur().getAuteurs();		
		for(int i=1;i<=_auteurs.size();i++){
				listeAuteurs.add(_auteurs.get(i).getNom()+" "+_auteurs.get(i).getPrenom());		
		}
		if(_auteurs.size() == 0){
			listeAuteurs.add("Aucun auteur(s) encore enregistree");
			buttonRech.setEnabled(false);
		}

	}
	
	public void alimenteOuvrages(Ouvrage ouv) {
		//listeOuvrages.clear();			
		listeOuvrages.add(ouv.getIsbn()+" "+ouv.getTitre()+" "+ouv.getEditeur()+" "+ESDate.ecrireDate (ouv.getDateEdition()));
		listeOuvrages.setEnabled(true);
		
	}
	
	public void alimenteArticles(Article art){
		listeArticles.add(art.getParution().getPeriodique().getIssn()+" "+art.getTitre()+" " +
				" "+art.getParution().getNum()+" "+art.getPageDebut());
		listeArticles.setEnabled(true);
			
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			buttonRech.setEnabled(true);
			buttonAnnuler.setEnabled(true);
			buttonVoir.setEnabled(false);
			buttonFermer.setEnabled(false);
			break;
			}
		case finale: {
			buttonRech.setEnabled(false);
			buttonAnnuler.setEnabled(false);
			buttonVoir.setEnabled(true);
			buttonFermer.setEnabled(true);
			break;
			}
		}
	}
}